package com.vita.core.device;

import java.util.ArrayList;
import java.util.List;

import com.vita.common.FileUtils;
import com.vita.common.PojoUtils;
import com.vita.core.Ico;
import com.vita.core.IcoEnter;
import com.vita.core.function.Func;

/**
 * 把文件中的内容读取出来
 * 放入一个List<>中
 */
public class FileToTable {
    public static <O> List<O> run(String filename,String sep,Class<O> o){
        Ico ico = IcoEnter.input(new Func() {

            /**
             * 读取文件中的内容到List<String>
             */
            @Override
            public Object apply(Object t) {
                return FileUtils.getList((String)t);
            }
            
        }).convert(new Func() {

            /**
             * 把List<String>转为List<实体类>
             */
            @Override
            public Object apply(Object t) {
                List<String> list = (List<String>) t;
                List<O> listClass = new ArrayList<>();
                for(String s:list){
                    String[] str = s.split(sep);
                    try {
                        O pojo = PojoUtils.getObjectList(o, str);
                        listClass.add(pojo);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    
                }
                return listClass;
            }
            
            // 如果需要将List<实体类>写入数据库库可以再进行 .output(Func output)
        });

        return ico.run(filename, new ArrayList<>());
    }
}
